package com.newviews.tcmip.service.inf;

import com.newviews.tcmip.common.model.PageModel;
import com.newviews.tcmip.common.model.ResultModel;
import com.newviews.tcmip.pojo.po.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.newviews.tcmip.pojo.vo.EtcmCommonBaseInfoRespVO;
import com.newviews.tcmip.pojo.vo.export.EtcmDiseaseExportReqVO;
import com.newviews.tcmip.pojo.vo.index.EtcmIndexStatusticsRespVO;
import com.newviews.tcmip.web.vo.combin.NetworkStatisticsRespVo;
import com.newviews.tcmip.web.vo.etcmherb.download.EtcmHerbExportReqVO;
import com.newviews.tcmip.web.vo.etcmherb.statistics.HerbStatisticsRespVo;
import com.newviews.tcmip.web.vo.etcmpx.PxIngrStatisticsRespVo;
import com.newviews.tcmip.web.vo.etcmpx.PxNetworkStatisticsRespVo;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 中草药库 服务类
 * </p>
 *
 * @author lxc
 * @since 2024-02-29
 */
public interface EtcmHerbServiceInf extends IService<EtcmHerbPo> {
    ResultModel<EtcmIndexStatusticsRespVO> getStatisticsHerb(String langCode, String uiTypeCode, String meridians, String flavor, String property, String prepositionContent);

    ResultModel<PageModel<Map<String,String>>> getIndexPage(String languageCode,String uiTypeCode, Integer pageNo, Integer pageSize,String searchName, String meridians, String herbFlavorCode, String herbPropertyCode,String sortType,String pContent);


    List<Map<String, String>> getHerbDownload(EtcmHerbExportReqVO reqVO);


    ResultModel<PageModel<Map<String,String>>> getPage(String languageCode,String uiTypeCode, Integer pageNo, Integer pageSize,String searchName, String meridians, String herbFlavorCode, String herbPropertyCode,String sortType);



    ResultModel<List<EtcmHerbFlavorPo>> getFlavorList(String languageCode);

    ResultModel<List<EtcmHerbPropertyPo>> getPropertyList(String languageCode);


    ResultModel<List<EtcmCommonBaseInfoRespVO>> getDetails(String herbId, String languageCode, String uiTypeCode);

    ResultModel<PageModel<Map<String, String>>> getPageByIngr(String languageCode, String uiTypeCode, String herbId, Integer pageNo, Integer pageSize, String searchName, String ingrBbb, String ingrCaco2, String ingrHia,String ingrHob,String sortType);


    ResultModel<PageModel<Map<String, String>>> getPageByExperimentalRecords(String languageCode, String uiTypeCode, String herbId, Integer pageNo, Integer pageSize, String searchName,String sortType);

    ResultModel<PageModel<Map<String, String>>> getPageByPx(String languageCode, String uiTypeCode, String herbId, Integer pageNo, Integer pageSize, String searchName,String sortType);

    ResultModel<PageModel<Map<String, String>>> getPageByCombinedHerbs(String languageCode, String uiTypeCode, String herbId, Integer pageNo, Integer pageSize, String searchName,String sortType);

    ResultModel<PageModel<Map<String, String>>> getPageByAssociatedDiseases(String languageCode, String uiTypeCode, String herbId, Integer pageNo, Integer pageSize, String searchName,String sortType);

    ResultModel<PageModel<Map<String, String>>> getPageByIngrTarget(String languageCode, String uiTypeCode, String herbId, Integer pageNo, Integer pageSize, String searchName,String type,String sortType);

    ResultModel<List<EtcmHerbMeridiansPo>> getMeridiansList(String langCode);

    ResultModel<HerbStatisticsRespVo> getStatistics(String content);

    ResultModel<PxIngrStatisticsRespVo> getIngredientStatistics(String content, String herbId);

    ResultModel<Map<String, String>> getTargetStatistics(String content, String herbId);

    ResultModel<NetworkStatisticsRespVo> networkStatistics(String herbId, String langCode, String uiTypeCode);

    ResultModel<PageModel<Map<String, String>>> networkPage(String herbId, String langCode, String uiTypeCode, Integer pageNo, Integer pageSize);


}
